/*
 * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
 * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 */

package java.nio;


/**
 * 用于字节顺序的类型安全枚举。
 *
 * @author Mark Reinhold
 * @author JSR-51 Expert Group
 * @since 1.4
 */

public final class ByteOrder {

    private String name;

    private ByteOrder(String name) {
        this.name = name;
    }

    /**
     * 表示大端字节顺序的常数。
     * 按照这个顺序，一个多字节值的字节是从最重要的到最不重要的顺序排列的。
     * （将高序字节存储在起始地址）
     * 如果我们将0x1234abcd写入到以0x0000开始的内存中，则结果为；
		address	big-endian	little-endian
		0x0000	0x12	0xcd
		0x0001	0x34	0xab
		0x0002	0xab	0x34
		0x0003	0xcd	0x12
     */
    public static final ByteOrder BIG_ENDIAN
        = new ByteOrder("BIG_ENDIAN");

    /**
     * 表示小端字节顺序的常数。
     * 在这个顺序中，多字节值的字节是从最不重要的顺序到最重要的。
     */
    public static final ByteOrder LITTLE_ENDIAN
        = new ByteOrder("LITTLE_ENDIAN");

    /**
     * 检索底层平台的本机字节顺序。
     *
     * <p> 定义此方法是为了使性能敏感的Java代码能够以与硬件相同的字节顺序分配直接缓冲区。
     * 使用此类缓冲区时，本机代码库通常更有效。
     * </p>
     *
     * @return  The native byte order of the hardware upon which this Java
     *          virtual machine is running
     */
    public static ByteOrder nativeOrder() {
        return Bits.byteOrder();
    }

    /**
     * 构造描述此对象的字符串。
     *
     * <p> 这个方法对BIG_ENDIAN返回字符串“BIG_ENDIAN”，对LITTLE_ENDIAN返回字符串“LITTLE_ENDIAN”。
     * </p>
     *
     * @return  The specified string
     */
    public String toString() {
        return name;
    }

}
